使用别名

使用别名 (Alias) 实现对 Kanzi 节点的一致访问。您可以使用别名在 Kanzi StudioKanzi Engine API 或脚本中访问节点。 因为您在 Kanzi Studio 中创建应用程序时在工程的场景图中移动了节点,所以跟踪这些节点的最简单方法是使用别名。您可以通过绑定、API 或者使用井号 (#) 后跟别名名称来检索别名目标节点,而不管节点在工程中的位置。

请注意,您必须始终将别名添加到要从中检索别名的那个节点的资源字典中。

从节点创建别名

从节点创建别名时,Kanzi Studio 会将别名添加到节点中包含资源字典的最近祖先的资源字典中。例如,如果场景 (Scene) 拥有资源字典且包含一个 摄像机 (Camera),当您直接从摄像机 (Camera) 节点创建别名时,Kanzi Studio 会自动将指向摄像机 (Camera) 节点的别名添加到场景 (Scene) 节点的资源字典中。

要创建别名:

  1. 工程 (Project) 中,按下 Alt 并右键点击您希望 Kanzi Studio 自动添加其子孙的那个节点,然后选择 资源字典 (Resource Dictionary)
    例如,如果希望使用别名访问 2D 视口 (Viewport 2D) 节点内的节点,请将资源字典 (Resource Dictionary) 添加到 2D 视口 (Viewport 2D)
  2. 工程 (Project) 中,按下 Alt 并右键点击包含资源字典的节点的子孙节点,然后选择 别名 (Alias)
    例如,在包含摄像机 (Camera)2D 视口 (Viewport 2D) 中,按下 Alt 并右键点击摄像机 (Camera),然后选择别名 (Alias)
    Kanzi Studio 会创建一个别名(它指向您从中创建该别名的节点),并将该别名添加到它的含资源字典的最近祖先节点的资源字典中。

创建别名并手动设置其目标

要创建别名并手动设置其目标:

  1. 工程 (Project)按下 Alt 并右键点击指向您要为其添加别名的那个资源字典的节点,然后选择资源字典 (Resource Dictionary)
    例如,如果希望使用别名访问 2D 视口 (Viewport 2D) 节点内的节点,请将资源字典 (Resource Dictionary) 添加到 2D 视口 (Viewport 2D)
  2. 字典 (Dictionaries) 中选择要添加别名的资源字典,点击+ 添加资源 (+ Add Resource),选择创建 (Create) > 别名 (Alias) 并重命名该别名。
    Kanzi Studio 会将别名添加到您在 字典 (Dictionaries) 中选择的资源字典中。
    字典 (Dictionaries)显示您在工程 (Project)中所选节点的本地资源的资源 ID。
  3. 字典 (Dictionaries) 中点击别名名称旁边的单元格,并在下拉菜单中选择要使用别名访问的节点。
    使用 <Relative> 为要为其资源字典添加别名的节点输入相对路径。
    当可以从拥有别名所在资源字典的节点到达目标节点时,请使用绝对路径。

在绑定中使用别名

通过绑定来使用其他节点的属性或属性字段更新某个节点的属性或属性字段。

要在绑定中使用别名,请在花括号中输入 # 符号,后跟别名名称、正斜杠以及别名所指向的项的属性名称。。

例如,要将某个属性绑定到绑定参数编辑器 (Binding Argument Editor)表达式 (Expression) 中别名为 Sphere 的目标节点的布局宽度 (Layout Width) 属性,请输入

{#Sphere/LayoutWidth}

请参阅使用绑定绑定表达式参考

使用别名设置动作目标

要使用别名定义动作的目标项:

  1. 创建一个别名。请参阅从节点创建别名
  2. 添加触发器到节点。请参阅使用触发器
  3. 节点组件 (Node Components) > 触发器 (Triggers) 部分,在您上一步中添加的触发器中点击添加 (Add) 下拉菜单并选择一个动作。
    例如,选择 设置属性 (Set Property) 动作。
  4. 在该动作设置中,将目标项 (Target Item) 属性设置为您在第一步中创建的别名,然后点击 保存 (Save)

在 API 中使用 别名 (Aliases)

要通过 API 使用别名访问节点

//使用位于场景 (Scene) 节点的资源字典中的别名 #Grid List Box
//Get 3D 网格列表框 (Grid List Box 3D) 节点的参考。
GridListBox3DSharedPtr gridListBox = scene->lookupNode<GridListBox3D>("#Grid List Box");

另请参阅

使用资源字典

资源管理

使用绑定

绑定表达式参考